import { fileURLToPath, URL } from 'node:url'
import transformerDirective from '@unocss/transformer-directives'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createHtmlPlugin } from 'vite-plugin-html'
import UnoCSS from 'unocss/vite'
import Components from 'unplugin-vue-components/vite'
// https://vitejs.dev/config/

export default defineConfig(async ({ mode }) => {
  const { VITE_BASE_ADDON_NAME, VITE_BASE_APPID, VITE_BASE_PLAID } = loadEnv(mode, process.cwd())
  console.log('cwd', loadEnv(mode, process.cwd()))
  return {
    base: mode === 'development' ? '/' : '/assets/addons/' + VITE_BASE_ADDON_NAME + '/',
    plugins: [
      vue(),
      createHtmlPlugin({
        minify: true,
        entry: '/src/main.ts',
        template: '/index.html',
        // 我去这个文档没有，GPT居然知道
        injectVars: {
          VITE_BASE_ADDON_NAME,
          VITE_BASE_PLAID: VITE_BASE_APPID,
          VITE_BASE_APPID: VITE_BASE_PLAID
        }
      }),
      UnoCSS({
        transformers: [transformerDirective()]
      }),
      // 自动加载
      Components({})
    ],
    build: {
      rollupOptions: {
        output: {
          entryFileNames: 'assets/dk-entry.js', // JS文件名格式
          chunkFileNames: 'assets/dk-chunk.js', // 按需加载的chunk（模块）文件名格式
          assetFileNames: 'assets/dk-asset.[ext]', // 非JS和CSS资源文件名格式

          // 如果你希望为CSS文件单独设置输出格式：
          // （默认情况下，CSS是内联到JavaScript中的，或者作为独立文件输出）
          cssOutput: {
            entryFileNames: 'styles/dk-entry.css',
            chunkFileNames: 'styles/dk-chunk.css'
          }
        }
      }
    },
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    }
  }
})
